package pl.wroc.pwr.docs.repos.webapp.web;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import org.h2.fulltext.FullText;
import org.h2.fulltext.FullTextLucene;

import pl.wroc.pwr.docs.repos.webapp.repo.Document;
import pl.wroc.pwr.docs.repos.webapp.repo.DocumentDao;
import pl.wroc.pwr.docs.repos.webapp.web.Message.STATUS;

@WebServlet(urlPatterns="/search")
public class SearchServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String phrase = req.getParameter("phrase");
		MessageQueue messages = ((MessageQueue) req.getSession().getAttribute("messages"));
		List<Document> documents = new ArrayList<Document>();
		ServletContext context = getServletContext();		
		DataSource ds = (DataSource) context.getAttribute("connectionPool");
		DocumentDao dao;
		Connection con = null;
		
		if(phrase.isEmpty()){
			if(req.getParameter("search_list") == null){	//wartość search_list oznacza, że wyszukiwanie jest wykonywane z poziomu strony głównej, nie listy
				
//				resp.sendRedirect("/index.jsp");
				resp.sendRedirect("/documents-list");
			}
			else{
				//resp.sendRedirect("javascript: history.go(-1)");	//Nie jestem do końca przekonany do tego rozwiązania
																	//nie jest zbyt eleganckie. Ale działa. Jeśli wyszukuje się z poziomu listy
																	//bez kryteriów, poprzednie kryteria zostają przywrócone, w efekcie nic nie
																	//zostaje zmienione.
//			

//			}
			}
			
		}
		else {
		
			try {
				con = ds.getConnection();
				dao = new DocumentDao(con);
				ResultSet rs;
				

			} catch (SQLException e) {
				e.printStackTrace();
			} finally{
				if(con != null){
					try {
						con.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
				}
			}
			context.getRequestDispatcher("/documents-list.jsp").forward(req, resp);
		}
		
	}
}